from rest_framework.generics import ListCreateAPIView

from apps.meiduo_admin.serializers.users import UserSerializer, UserCreateSerializer
from apps.meiduo_admin.utils.pagination import MeiduoPagination
from apps.users.models import User


class UserView(ListCreateAPIView):
    #查询用户 多条list   创建用户 一条create

    # queryset = User.objects.filter(is_staff=False)
    # 重写get_queryset方法，根据前端是否传递keyword值返回不同查询结果
    #模糊查询 ListCreateAPIView自身无法满足这个需求
    def get_queryset(self):
        #获取关键字
        #在通过关键字进行模糊查询   request是路由里面的as_views里面的
        # 当路由到达时 as_views就会将请求对象request封装
        keyword = self.request.query_params.get("keyword")
        #在用户名上进行关键字模糊查询
        # if isinstance(keyword,int):
        #     return User.objects.filter(is_staff=False,mobile__contains=keyword)
        return User.objects.filter(is_staff=False, username__contains=keyword)

    serializer_class =UserSerializer
    #新增用户的序列化器无法满足条件
    def get_serializer_class(self):
        if self.request.method =='GET':
            return UserSerializer
        else:
            return UserCreateSerializer

    #同时将数据分页   本身的分页器无法满足自身的要求  故自定义分页器
    pagination_class = MeiduoPagination



